//全局常量 只能在函数外定义
//TODO:变量、语句、函数
const val PI=3.14

fun main(args: Array<String>) {
    println("Hello World!")
// region 变量声明
    //var：可读可写  val：只读
    var name:String="Eticos"
    //内置数据类型：String Char Boolean Int Double Float List Set(无重复元素集合) Map
    val age=18
    println(name+" "+age)
// endregion

// region if语句
    //x..y 表示[x,y]
    var number=60
    if (number in 10..59){
        println("不及格")
    }else if (number in 0..9){
        println("很差")
    }else if (number !in 0..59){
        println("及格")
    }
// endregion

// region when判断语句
    val week=7
    val info=when(week){
        1->"周一"
        2->"周二"
        3->"周三"
        4->"周四"
        5->"周五"
        6->"周六"
        7->"周日"
        else-> {
            println("不知道")
        }
    }
    println("今天是"+info)
// endregion

// region String模版
    val garden="海滨公园"
    val time=3
    println("今天天气晴朗，去${garden}玩，玩了$time 小时")
    val isLogin=true
    println("server result:${if (isLogin)"Successful!" else "faild!"}")

// endregion

//查看反编译字节码：Tools-Kotlin-Show Kotlin Bytecode

// region 函数
    //privte fun mothod(age:Int,name:String):Int{ ... return... }
    fun add(x1:Int,x2:Int=16):Int{
        return x1+x2
    }
    println(add(2,5))
    println(add(4))
    println(add(x1=8))

    fun doWork():Unit{  //unit：无返回类型
        val i:String="2456"
    }

    fun show(number:Int){
        when(number){
            -1-> TODO("数字错误")   //相当于抛出异常
            in 0..59-> println("0<=x<60")
            in 60..100->println("60<=x<100")
        }
    }
//endregion

//region 反引号中函数名特点
    fun `登录功能 2022年3月17日`(name:String,pwd:String){
        println("用户名是$name,密码是$pwd")
    }
    `登录功能 2022年3月17日`("Cheng","12345")
//endregion
}